隨著組織越來越多地采用多云、混合云和邊緣計算,他們的應(yīng)用程序在廣泛的環(huán)境中跟蹤、存儲和分析敏感的用戶數(shù)據(jù)。為了確保使用應(yīng)用程序的個人的合規(guī)性和隱私,數(shù)據(jù)需要在其整個生命周期內(nèi)得到保護。我們對文件系統(tǒng)和存儲驅(qū)動器進行加密,并使用SSH 協(xié)議來保持靜止數(shù)據(jù)和傳輸中的數(shù)據(jù)即使被盜也能保持安全,從而在沒有加密密鑰的情況下使其無用。但是,使用中的數(shù)據(jù)通常是未加密的,容易受到攻擊和利用。為了在運行時保護應(yīng)用程序和數(shù)據(jù),開發(fā)人員越來越多地轉(zhuǎn)向可信執(zhí)行環(huán)境,通常被稱為“安全飛地”。
什么是可信執(zhí)行環(huán)境?
可信執(zhí)行環(huán)境 (TEE) 是內(nèi)存中 CPU 加密的隔離私有飛地,用于在硬件級別保護正在使用的數(shù)據(jù)。雖然敏感數(shù)據(jù)位于 enclave 內(nèi),但未經(jīng)授權(quán)的實體?無法將其移除、修改或添加更多數(shù)據(jù)。飛地的內(nèi)容對外部各方來說是不可見的和不可訪問的,受到保護以免受外部和內(nèi)部威脅。
?因此,TEE 可確保以下內(nèi)容:
- 數(shù)據(jù)的完整性
- 代碼完整性
- 數(shù)據(jù)保密
根據(jù)供應(yīng)商和底層技術(shù),TEE 可以啟用其他功能,例如:
- 代碼機密性——保護被認為是知識產(chǎn)權(quán)的算法。
- Authenticated launch——僅用于啟動已驗證進程的授權(quán)或身份驗證強制執(zhí)行。
- 可編程性——從制造商或其他安全來源訪問 TEE 編程代碼。
- 證明——測量起源和飛地的當前狀態(tài)以防篡改。
- 可恢復(fù)性——回滾到以前的安全狀態(tài),以防 TEE 受到威脅。
這些功能使開發(fā)人員能夠完全控制應(yīng)用程序的安全性,即使在操作系統(tǒng)、BIOS 和應(yīng)用程序本身受到威脅的情況下也能保護敏感數(shù)據(jù)和代碼。
安全飛地如何工作?
要了解 TEE 的工作原理,讓我們看看英特爾? Software Guard Extensions (SGX)。借助英特爾? SGX,應(yīng)用程序數(shù)據(jù)分為可信和不可信部分。代碼的受信任部分用于在受保護的飛地內(nèi)運行應(yīng)用程序。CPU 拒絕所有其他對 enclave 的訪問,無論請求它的實體的權(quán)限如何。一旦處理完畢,可信數(shù)據(jù)將保存在 TEE 內(nèi),而提供給 enclave 外應(yīng)用程序的信息將再次加密。
Enclave 是通過硬件命令創(chuàng)建和配置的,這些命令支持內(nèi)存頁面的創(chuàng)建和添加,以及 enclave 初始化、刪除或測量。平臺的固件使用其配置設(shè)置來設(shè)置 TEE 區(qū)域。啟用擴展后,CPU 會保留一部分 DRAM 作為處理器保留內(nèi)存 (PRM)。PRM 大小可以通過固件工具指定。
然后,CPU 通過設(shè)置一對特定于模型的寄存器 (MSR) 來分配和配置 PRM。接下來,在 PRM 中創(chuàng)建 Enclave Page Caches (EPC),其中包含帶有基地址、enclave 大小和數(shù)據(jù)安全信息的元數(shù)據(jù)。最后,CPU 創(chuàng)建 enclave 初始狀態(tài)的加密散列并記錄隨后的其他狀態(tài)。此散列稍后用于通過加密密鑰和硬件信任根進行證明。一旦初始化,飛地就可以托管用戶應(yīng)用程序。
可信執(zhí)行環(huán)境有多安全?
為了最好地解釋 TEE 的安全性,我們首先需要解決 CPU特權(quán)環(huán)。加密密鑰傳統(tǒng)上存儲在應(yīng)用程序中,在環(huán) 3 級別。一旦受到損害,這種模型就會危及應(yīng)用程序中受保護的機密。
在現(xiàn)代架構(gòu)中,特權(quán)環(huán)超越了內(nèi)核和管理程序,擴展到系統(tǒng)管理模式 (SMM) 和管理引擎 (ME)。這允許 CPU 保護 TEE 使用的內(nèi)存,將攻擊面減少到硬件的最低層,并拒絕訪問除最高級別權(quán)限之外的所有權(quán)限。TEE 的功能和安全性的另一個關(guān)鍵是證明。通過證明,在共享任何數(shù)據(jù)之前,對整個平臺和飛地進行測量和驗證。
例如,一個 enclave 可以從它自己或同一平臺上的另一個 enclave 請求本地報告,并使用該報告進行數(shù)據(jù)檢查和驗證。類似地,遠程驗證者可以在從 enclave 請求任何敏感數(shù)據(jù)之前請求證明報告。一旦建立信任,他們就可以通過外部各方不可見的安全通道共享會話密鑰和數(shù)據(jù)。
由于未加密的秘密永遠不會離開 TEE,因此安全飛地可以保護數(shù)據(jù)免受:
- 主機上的其他應(yīng)用程序
- 主機操作系統(tǒng)或管理程序
- 系統(tǒng)管理員
- 服務(wù)供應(yīng)商
即使是基礎(chǔ)設(shè)施所有者和其他對硬件有物理訪問權(quán)限的實體也無法訪問數(shù)據(jù)。
機密計算中的安全飛地
為了實現(xiàn)跨不同云環(huán)境的私有工作負載的安全和標準化處理,Linux 基金會于 2019 年成立了一個名為機密計算聯(lián)盟 (CCC)的社區(qū)。自成立以來,CCC 成員一直致力于加速云計算的采用并實現(xiàn)開放式協(xié)作。由于它們提供了高水平的數(shù)據(jù)保護,基于硬件的安全飛地是該計劃的核心。通過 TEE 支持的機密計算,組織可以在使用其應(yīng)用程序時保護從單個加密密鑰到整個工作負載的所有內(nèi)容。
為什么要采用機密計算?
今天,秘密遠遠超出了密碼,包括高度機密和不可替代的信息,例如醫(yī)療記錄或生物特征數(shù)據(jù)。機密計算通過保護這些數(shù)據(jù)并防止財務(wù)損失或聲譽損害為企業(yè)提供競爭優(yōu)勢。但是,這種不斷發(fā)展的技術(shù)還有其他用例。
多方計算
機密計算使組織能夠處理來自多個來源的數(shù)據(jù),而無需將其底層代碼、知識產(chǎn)權(quán)或私人客戶信息暴露給合作伙伴。無論競爭與否,政府組織、醫(yī)療保健或研究機構(gòu)都可以利用此功能進行協(xié)作和分享見解,以實現(xiàn)聯(lián)邦學(xué)習(xí)的目的。
金融保險
利用機密計算,金融機構(gòu)可以防止洗錢等欺詐活動。一家銀行可以與其網(wǎng)絡(luò)內(nèi)外的另一家銀行共享一個可疑賬戶,以對其進行審計并最大限度地減少誤報的可能性。保險公司可以使用類似的方法來防止欺詐。他們可以在彼此之間分享一項可疑的聲明以進行模式識別。通過將敏感數(shù)據(jù)存儲在飛地中并在不同來源之間共享數(shù)據(jù)記錄,可以在不泄露任何機密信息的情況下獲得結(jié)果。
結(jié)論
隨著機密計算的發(fā)展,不斷開發(fā)用于增強安全性的企業(yè)工具。這刺激了云計算的采用、增長和安全性,釋放了它的全部潛力。通過在執(zhí)行期間對敏感數(shù)據(jù)和代碼提供前所未有的保護,可信執(zhí)行環(huán)境使組織能夠加強其安全態(tài)勢并利用當今面向未來的技術(shù)。